import qqmap from '../../../utils/qqmap'

let repair_id // 存将来取消报销的id

// map.js
Page({
  data: {
    // 31.036568 121.593661 航欣苑
    // 31.035065 121.595913 苏航
    // 31.034871 121.612067 黑马

    latitude: 31.036568,
    longitude: 121.593661,

    dialogVisible: false,

    // 标记点们
    markers: [
      // 每一个标记都一个对象   经纬度 宽高
      {
        id: 1,
        latitude: 31.036568,
        longitude: 121.593661,
        width: 24,
        height: 30,
      },
      {
        id: 2,
        latitude: 31.035065,
        longitude: 121.595913,
        iconPath: '/static/images/marker.png',
        width: 40,
        height: 40,
      },
    ],
  },

  onLoad({ id }) {
    repair_id = id
    this.getRepairDetailById(id)
    // this.setData

    // 页面一加载, 路线规划(复杂 及其恶心)
    this.fn()
  },

  fn() {
    // 路线规划
    qqmap.direction({
      mode: 'driving',
      from: '31.035065,121.595913', // 起点经纬度字符串
      to: '31.036568,121.593661', // 终点经纬度字符串
      // 如果需要获取路线规划的结果  必须配置success会调函数
      // 一系列的坐标点信息
      // 这些坐标点信息需要转换 不能直接配置给map组件的polyline属性
      success: (res) => {
        const coords = res.result.routes[0].polyline
        const points = []
        //坐标解压（返回的点串坐标，通过前向差分进行压缩）
        for (let i = 2; i < coords.length; i++) {
          coords[i] = Number(coords[i - 2]) + Number(coords[i]) / 1000000
        }
        //将解压后的坐标放入点串数组pl中
        for (let i = 0; i < coords.length; i += 2) {
          points.push({ latitude: coords[i], longitude: coords[i + 1] })
        }
        //设置polyline属性，将路线显示出来,将解压坐标第一个数据作为起点
        this.setData({
          polyline: [
            {
              points,
              color: '#f00', // 路线的颜色
              width: 6, // 路线的宽度
            },
          ],
        })
      },
    })
  },

  async getRepairDetailById(id) {
    if (!id) return

    // 请求数据接口
    const { code, data: repairDetail } = await wx.http.get('/repair/' + id)
    // 校验接口调用结果
    if (code !== 10000) return wx.utils.toast('获取报修详情失败!')
    // 渲染报修详情
    this.setData({ ...repairDetail })
  },

  async dialogClose(ev) {
    // console.log(ev.detail)
    if (ev.detail === 'confirm') {
      // console.log('确认取消..', repair_id)
      const { code } = await wx.http.put('/cancel/repaire/' + repair_id)
      if (code !== 10000) return wx.utils.toast('取消报修失败')

      wx.navigateBack()
    }
  },

  test() {
    this.setData({ dialogVisible: true })
  },

  goForm() {
    // 跳转到在线填写报修信息页面
    wx.navigateTo({
      url: '/repair_pkg/pages/form/index?id=' + repair_id,
    })
  },
})
